import $store from '@/store'
/**
 * @description 页面路由/操作需要用户登录(且需绑定手机号)权限前置验证
 * @param {String} route - 目标路由path
 * @param {Function} cb - 登录了的回调函数
 */
export default ({ route = ROUTES_MAP[`/${getCurrentPages().pop().route}`], cb = undefined } = {}) => {
  // #ifdef APP-PLUS
  /**
   * @description 安卓平台 vivo审核要求
   * 若未同意隐私政策，不可以调用第三方 SDK 收集 IMEI、IMSI、设备 MAC 地址、Android ID、OAID、MEID、ICCID、SN、SUPI、
   *  SUCI、软件安装列表、位置、联系人、通话记录、日历、短信、本机电话号码、图片、音视频、剪切板等个人信息
   */
  if (uni.getSystemInfoSync().platform === 'android' && !$store.state.app.dialogIsAgree) {
    uni.showModal({
      title: '提示',
      confirmText: '开始阅读',
      content: '当前页功能需要同意隐私协议政策以继续使用',
      success: (res) => {
        if (res.confirm) {
          $store.commit('app/SET_ISAGREE', null)
        }
      },
    })
    return
  }
  // #endif

  // 传入了路由就用传入的route 否则使用当前页面路由
  if (!$store.getters.isLogin) {
    const curPage = getCurrentPages().pop()
    const mode = route?.meta?.loginMode || 'page'
    const fullPath = route?.fullPath || curPage.$page.fullPath
    $store.dispatch('modal/SetAuthMode', mode)
    $store.dispatch('modal/SetAuthType')
    LoginModal(mode, fullPath)
    return
  } else typeof cb === 'function' && cb()
}

/**
 * @description 登录方式
 * @param {String} mode - modal：模态弹窗登录；page：跳转登录页面
 * @param {String} url - mode值为'page'时，登录成功后跳转回去的完整路径:fullPath
 */
export const LoginModal = (mode, url) => {
  switch (mode) {
    case 'modal':
      // 交给组件cu-auth-modal自动处理了
      break
    default:
      uni.showModal({
        title: '提示',
        content: '系统检测到您尚未登录，请登录后继续操作！',
        success: (res) => {
          if (res.confirm) {
            uni.redirectTo({ url: `/pages/user/auth?redirect=${encodeURIComponent(url)}` })
          } else if (res.cancel) {
            $store.dispatch('modal/SetAuthMode')
            $store.dispatch('modal/SetAuthType')
          }
        },
      })
      break
  }
}
